package com.sisbibvir.unmsm.controller;

import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import javax.faces.context.FacesContext;
import javax.faces.event.ActionEvent;

import com.sisbibvir.unmsm.dao.AlumnoDAO;

import com.sisbibvir.unmsm.dao.JPAUtil;
import com.sisbibvir.unmsm.dao.TipoUsuarioDAO;
import com.sisbibvir.unmsm.dao.UsuarioDAO;
import com.sisbibvir.unmsm.entidades.Alumno;


import com.sisbibvir.unmsm.entidades.TipoUsuario;
import com.sisbibvir.unmsm.entidades.Usuario;

@ManagedBean(name = "regAlum")
@SessionScoped

public class RegistroAlumController {
	
	private JPAUtil util;
	private AlumnoDAO alumDAO;
	private TipoUsuarioDAO tipoDAO;
	
	private UsuarioDAO usuarioDAO;
	private Alumno alumno;
	private TipoUsuario tipoUsuario;
	private Usuario usuario;
	
	public String getCodigo() {
		return codigo;
	}

	public void setCodigo(String codigo) {
		this.codigo = codigo;
	}

	public String getNombre() {
		return nombre;
	}

	public void setNombre(String nombre) {
		this.nombre = nombre;
	}

	public String getApellido() {
		return apellido;
	}

	public void setApellido(String apellido) {
		this.apellido = apellido;
	}

	public String getCorreo() {
		return correo;
	}

	public void setCorreo(String correo) {
		this.correo = correo;
	}

	public String getUsuario_id() {
		return usuario_id;
	}

	public void setUsuario_id(String usuario_id) {
		this.usuario_id = usuario_id;
	}

	public String getPassword() {
		return password;
	}

	public void setPassword(String password) {
		this.password = password;
	}

	public int getPropuestaId() {
		return propuestaId;
	}

	public void setPropuestaId(int propuestaId) {
		this.propuestaId = propuestaId;
	}

	public String codigo="";
	public String nombre="" ;
	private String apellido="",correo="" ,usuario_id,password;
	private int propuestaId;
	
	public void buscar(){
		util = new JPAUtil();
		alumDAO = new AlumnoDAO(util.getEntityManager());
		
		try {
			alumno=alumDAO.read(codigo);
			apellido=alumno.getApellido();
			nombre=alumno.getNombre();
			correo=alumno.getCorreo();
		} catch (Exception e) {
			System.out.println("no se encontro  "
					+ e.getMessage());
			nombre="";
			correo="";
			apellido="";
		}
		util.getEntityManager().close();
		util = null;
		System.gc();
	}
	
	public String agregar() {
		util =  new JPAUtil();
		
		int a=3;
		String cod;
		 FacesContext context = FacesContext.getCurrentInstance();  
		tipoDAO = new TipoUsuarioDAO(util.getEntityManager());
		
		usuarioDAO = new UsuarioDAO(util.getEntityManager());
		
		//alumno = new Alumno();
		
		usuario = new Usuario();
		
		//alumno=new Alumno();
		//alumno=alumDAO.read(codigo);
	/*	alumno.setId(codigo);
		alumno.setApellido(apellido);
		alumno.setNombre(nombre);
		alumno.setCorreo(correo);
		alumDAO.create(alumno);*/
	//	cod=usuarioDAO.getRandomModel();
		//usuario_id="123";
		//;
		//System.out.println("CODIGO :"+ cod);
		usuario.setId(alumno.getId());
		System.out.println("ID  ALumno: " +alumno.getId());
		usuario.setPassword(password);
		tipoUsuario =  tipoDAO.read(3);
		util.getEntityManager().close();
		
		//tipoUsuario=tipoDAO.read(3);
		System.out.println("EL TIPO DE USUARIO:"+tipoUsuario.getDescripcion());
		
		/*alumno.setId(codigo);
		alumno.setNombre(nombre);
		alumno.setApellido(apellido);
		alumno.setCorreo(correo);
		alumno.anadeUsuario(usuario);*/
		
		util =  new JPAUtil();
		usuario.setTipoUsuario(tipoUsuario);
		tipoUsuario.getUsuarios().add(usuario);
		util.getEntityManager().getTransaction().begin();
		util.getEntityManager().merge(usuario);
		util.getEntityManager().getTransaction().commit();
		util.getEntityManager().close();
		
		util =  new JPAUtil();
		usuarioDAO=  new UsuarioDAO(util.getEntityManager());
		usuario=usuarioDAO.read(alumno.getId());
		System.out.println(usuario.getId());
		
		alumno.getUsuarios().add(usuario);
		usuario.getAlumnos().add(alumno);
		//util.getEntityManager().getTransaction().begin();
		util.getEntityManager().merge(usuario);
		util.getEntityManager().getTransaction().commit();
		
		
		
		
		
		util.getEntityManager().close();
		
		codigo = "";
		nombre="";
		apellido="";
		correo="";
		
		//System.out.println("EL ALUMNO:"+ alumno.getApellido()+" Codigo: "+codigo);
		
	//	usuario.setId(cod);
		///System.out.println("EL USUARIO "+usuario.getPassword()+" Codigo: "+cod);
		
		
         
	     
		//alumno.setUsuario_id(usuario_id);
		//util.getEntityManager().close();
		util = null;
		System.gc();
		return "/pages/Administracion/Login.xhtml";
	}
}